home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DDJMAG / DDJ9110.ZIP / STRING.ZIP / STRIREM.CPP < prev    next >
C/C++ Source or Header  |  1991-07-30  |  652b  |  30 lines

  1. #include <string.h>
  2. #include <ctype.h>
  3. #include <errno.h>
  4. #include <string.hpp>
  5.  
  6. String &String::remove(int pos, int count)
  7. {
  8.     if (count <= 0 || pos >= length())
  9.         return *this;
  10.     if (count > length()-pos) count = length()-pos;
  11.     int nl = length()-count;
  12.     srep *p = 0;
  13.     if (nl) {
  14.         p = new(nl) srep(nl);
  15.         if (!p) {
  16.             errno = ENOMEM;
  17.             return *this;
  18.         }
  19.         memmove(p->body,body(),pos);
  20.         memmove(p->body+pos,body()+pos+count,nl-pos);
  21.     }
  22.     if (rp) {
  23.         if (--rp->refs < 1)
  24.         delete rp;
  25.     }
  26.     rp = p;
  27.     rp->refs++;
  28.     return *this;
  29. }
  30.